package com.zsummer.demo.rabbitmq.workqueues;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.MessageProperties;
import com.zsummer.demo.rabbitmq.common.util.RabbitmqUtils;

/**
 * @author zsummer
 * @since 2021/12/9
 * 工作队列：多个消费者同事消费
 */
public class Producer {

    public static void main(String[] args) throws Exception{

        // 获取连接
        Connection connection = RabbitmqUtils.getConnection();
        // 获取通道
        Channel channel = connection.createChannel();
        /**
         * 队列声明
         * 参数1：队列名称
         * 参数2：队列是否持久化：true持久化，重启后队列依旧存在
         * 参数3：是否独占：true独占，队列只能被一个连接占用
         * 参数4：是否自动删除：true 不在使用时被删除
         * 参数5：队列额外设置
         */
        channel.queueDeclare("workqueue", true, false, false, null);
        for (int i = 0; i < 20; i++) {
            String msg = "hello " + i;
            /**
             * 发布消息
             * 参数1：交换机
             * 参数2：路由键
             * 参数3：消息属性 MessageProperties.PERSISTENT_TEXT_PLAIN 使消息进行持久化
             * 参数4：消息
             */
            channel.basicPublish("", "workqueue", MessageProperties.PERSISTENT_TEXT_PLAIN, msg.getBytes());
        }
        // 关闭连接和通道
        RabbitmqUtils.close(connection, channel);

    }
}
